<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.6" />
<title>Release notes for Gerrit 2.0.12</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

pre {
  padding: 0;
  margin: 0;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }


/*
 * xhtml11 specific
 *
 * */

tt {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

.monospaced {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install(2);
/*]]>*/
</script>
</head>
<body class="article">
<div id="header">
<h1>Release notes for Gerrit 2.0.12</h1>
<span id="revnumber">version 2.0.12 (from v2.7-rc2-530-g4d7ac77)</span>
<div id="toc">
  <div id="toctitle">Table of Contents</div>
  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph"><p>Gerrit 2.0.12 is now available in the usual location:</p></div>
<div class="paragraph"><p><a href="http://code.google.com/p/gerrit/downloads/list">http://code.google.com/p/gerrit/downloads/list</a></p></div>
<div class="paragraph"><p><strong>WARNING: This version contains a schema change.</strong></p></div>
<div class="paragraph"><p>Apply the schema upgrade:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>  java -jar gerrit.war --cat sql/upgrade010_011.sql | psql reviewdb</tt></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_important_notes">Important Notes</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_java_6_required">Java 6 Required</h3>
<div class="paragraph"><p>Gerrit now requires running within a Java 6 (or later) JVM.</p></div>
</div>
<div class="sect2">
<h3 id="_protocol_change">Protocol change</h3>
<div class="paragraph"><p>The protocol between the browser based JavaScript and the server has changed.  After installing 2.0.12 users need to load the site page again to ensure they are running 2.0.12 or later.  Users can verify they have the new version by checking the version number in the footer in the lower right.  Users who don&#8217;t load the new version (e.g. are using a stale tab from a week ago) will see errors when trying to view patches.</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_new_features">New Features</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Honor --reviewer=not.preferred.email during upload
</p>
</li>
<li>
<p>
Also scan by preferred email for --reviewers and --cc &#8230;
</p>
<div class="paragraph"><p>Better DWIMery for matching reviewers by name, email address, or just local name (e.g. "jdoe") if using HTTP authentication with email_format.</p></div>
</li>
<li>
<p>
Add support for MySQL database
</p>
<div class="paragraph"><p>Now MySQL can be used as a backend data store.</p></div>
</li>
<li>
<p>
Switch all current SSH commands to use args4j
</p>
</li>
<li>
<p>
Allow targeted cache flushes to only specific caches
</p>
<div class="paragraph"><p>SSH commands, especially administrative ones like "gerrit show-caches", "gerrit flush-caches", or "gerrit show-connections" now accept options like "-h"/"--help" to view command line options, and use a more typical option parsing semantics.</p></div>
</li>
<li>
<p>
GERRIT-164  Bind our SSH daemon with SO_REUSEADDR
</p>
</li>
<li>
<p>
Honor sshd.tcpKeepAlive for TCP keep alive controls
</p>
</li>
<li>
<p>
Enable SSH daemon cipher and MAC configuration
</p>
<div class="paragraph"><p>The SSH daemon now binds with SO_REUSEADDR, making warm-restarts of the daemon easier, especially if the site is busy.  Additionally, gerrit.config gained some new options to further control the behavior of the internal SSHD.</p></div>
</li>
<li>
<p>
Add admin command <em>gerrit show-connections</em>
</p>
<div class="paragraph"><p>The new "gerrit show-connections" command reports who is connected, from what host, and what command(s) they are running on that SSH session.</p></div>
</li>
<li>
<p>
Replace the top menu bar with a tab panel and links
</p>
</li>
<li>
<p>
GERRIT-27   Add a search box to quickly locate changes by change n&#8230;
</p>
<div class="paragraph"><p>The top menu bar area has been redesigned, and a search box has been added on the right, below the username and Settings links.  Currently the search box only accepts change numbers, but in the future we hope to support additional types of query strings.</p></div>
</li>
<li>
<p>
Allow users to disable clippy the flash movie if they &#8230;
</p>
<div class="paragraph"><p>A new per-account setting permits users to disable the clippy Flash movie that supports copying text to the clipboard.  In every context where this movie appears clicking on the text converts it to a text box, allowing a fast "click Ctrl-C" interaction to place the text on the clipboard.  Personally I&#8217;ve found that loading 3 Flash movies on a change page really slowed down the UI rendering, so I wanted to disable the Flash movies.</p></div>
</li>
<li>
<p>
Allow users to control the number of results per page
</p>
<div class="paragraph"><p>A new per-account setting allows users to control how many rows appear per page in the All screens, like All Open Changes, etc.</p></div>
</li>
<li>
<p>
Rewrite the keyboard event handlers to use new GlobalK&#8230;
</p>
</li>
<li>
<p>
GERRIT-136  Implement n/p keys to jump to next/previous diff chunk&#8230;
</p>
</li>
<li>
<p>
Add keyboard bindings n/p for all change lists to pagi&#8230;
</p>
</li>
<li>
<p>
Put the "Use <em>?</em> for keyboard help" ahead of the versi&#8230;
</p>
</li>
<li>
<p>
GERRIT-136  Use <em>f</em> in a patch to browse the list of files in the &#8230;
</p>
</li>
<li>
<p>
Add global jump navigation keys for the main menu
</p>
<div class="paragraph"><p>Keyboard bindings have been completely overhauled in this release, and should now work on every browser.  Press <em>?</em> in any context to see the available actions.  Please note that this help is context sensitive, so you will only see keys that make sense in the current context.  Actions in a user dashboard screen differ from actions in a patch (for example), but where possible the same key is used when the logical meaning is unchanged.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_bug_fixes">Bug Fixes</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Ignore "SshException: Already closed" errors
</p>
<div class="paragraph"><p>Hides some non-errors from the log file.</p></div>
</li>
<li>
<p>
GERRIT-86   Stop generating raw #target anchor tags
</p>
<div class="paragraph"><p>Should be a minor improvement for MSIE 6 users.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_other_changes">Other Changes</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Start 2.0.12 development
</p>
</li>
<li>
<p>
Report what version we want on a schema version mismat&#8230;
</p>
</li>
<li>
<p>
Remove unused imports in SshServlet
</p>
</li>
<li>
<p>
Fix vararg warnings in GerritSshDaemon
</p>
</li>
<li>
<p>
Update Ehcache to 1.6.0-beta5
</p>
</li>
<li>
<p>
Update SSHD to 1.0-r773859
</p>
</li>
<li>
<p>
Start targeting Java 1.6
</p>
</li>
<li>
<p>
Switch Maven GWT plugin to org.codehaus.mojo:gwt-maven&#8230;
</p>
</li>
<li>
<p>
GERRIT-75   Upgrade to GWT 1.6.4
</p>
</li>
<li>
<p>
GERRIT-75   Switch to GWT 1.6&#8217;s new HostedMode debugging utility
</p>
</li>
<li>
<p>
Allow become any account to use GET parameters
</p>
</li>
<li>
<p>
Switch to gwtexpui&#8217;s new CSS linker module
</p>
</li>
<li>
<p>
Load the GWT theme before any other stylesheets
</p>
</li>
<li>
<p>
Switch from our own LazyTabChild to GWT 1.6&#8217;s LazyPanel
</p>
</li>
<li>
<p>
GERRIT-75   Convert all GWT 1.5 listener uses to GWT 1.6 handlers
</p>
</li>
<li>
<p>
Stop bundling the PostgreSQL driver
</p>
</li>
<li>
<p>
Upgrade JGit to 0.4.0-372-gbd3c3db
</p>
</li>
<li>
<p>
Add args4j 2.0.12 as a dependency
</p>
</li>
<li>
<p>
Describe MySQL and H2 setup in jetty_gerrit.xml templa&#8230;
</p>
</li>
<li>
<p>
Actually deregister a command when it exits
</p>
</li>
<li>
<p>
Put the link to the review inside the body instead of &#8230;
</p>
</li>
<li>
<p>
Fix change permalinks after breaking them during GWT 1&#8230;
</p>
</li>
<li>
<p>
Delete dead CSS bundle code
</p>
</li>
<li>
<p>
Always use NpTextBox or NpTextArea to prevent GlobalKe&#8230;
</p>
</li>
<li>
<p>
Detect cases where system_config has too many rows
</p>
</li>
<li>
<p>
Remove unnecessary warning suppressions
</p>
</li>
<li>
<p>
Remove dead code, these aren&#8217;t used anymore
</p>
</li>
<li>
<p>
Fix warnings about potential serialization problems
</p>
</li>
<li>
<p>
Fix warning about debug code in OpenIdServiceImpl
</p>
</li>
<li>
<p>
Blur menu item hyperlinks on activation
</p>
</li>
<li>
<p>
Fix LinkMenuItem blur on older browsers
</p>
</li>
<li>
<p>
Remove dead LoginService, SignInResult classes
</p>
</li>
<li>
<p>
Remove pointless GWT.isClient calls in Gerrit module
</p>
</li>
<li>
<p>
Refactor how user preferences are applied to the UI
</p>
</li>
<li>
<p>
Move the watched project list to its own tab in settin&#8230;
</p>
</li>
<li>
<p>
Refactor account preferences model
</p>
</li>
<li>
<p>
Sort the RSA host key before the DSA host key
</p>
</li>
<li>
<p>
Clarify what the "known hosts entry" is
</p>
</li>
<li>
<p>
Cleanup the name of the search focus key registration
</p>
</li>
<li>
<p>
Change sign out handler to use GWT&#8217;s HandlerManager su&#8230;
</p>
</li>
<li>
<p>
Fix all onLoad, onUnload methods to be protected acces&#8230;
</p>
</li>
<li>
<p>
Honor GWT 1.6&#8217;s handleAsClick logic in DirectScreenLink
</p>
</li>
<li>
<p>
Switch all hyperlinks to be InlineHyperlink
</p>
</li>
<li>
<p>
Fix unused import in PatchScreen
</p>
</li>
<li>
<p>
Make n/p only honor comments on file adds/deletes
</p>
</li>
<li>
<p>
Switch to gwtjsonrpc&#8217;s new Handler based status update&#8230;
</p>
</li>
<li>
<p>
Move the comment editor actions into their own keyboar&#8230;
</p>
</li>
<li>
<p>
Ensure the row pointer is visible before moving it
</p>
</li>
<li>
<p>
Automatically reposition/resize file browser if window&#8230;
</p>
</li>
<li>
<p>
Minor cleanup to Gerrit module bootstrap code path
</p>
</li>
<li>
<p>
Make escape in the search box abort the search
</p>
</li>
<li>
<p>
Switch to tagged gwtexpui, gwtjsonrpc, gwtorm
</p>
</li>
<li>
<p>
gerrit 2.0.12
</p>
</li>
</ul></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Version 2.0.12 (from v2.7-rc2-530-g4d7ac77)<br />
Last updated 2013-10-08 10:02:12 PDT
</div>
</div>
</body>
</html>
